package com.jluzh10.learning.utils;

import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

/**
 * @author yzg
 * @create 2019/5/24
 *
 * 字符串转拼音
 */
public class PinYinUtil {

    /**
     * 返回全小写拼音
     *
     * @param src
     * @return
     */
    public static String getPinYin(String src) throws Exception {
        char[] hz = src.toCharArray();//该方法的作用是返回一个字符数组，该字符数组中存放了当前字符串中的所有字符
        String[] py;//该数组用来存储
        //设置汉子拼音输出的格式
        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
        format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        format.setVCharType(HanyuPinyinVCharType.WITH_V);

        StringBuilder pys = new StringBuilder(); //存放拼音字符串

        for (char aHz : hz) {
            //先判断是否为汉字字符
            if (Character.toString(aHz).matches("[\\u4E00-\\u9FA5]+")) {
                //将汉字的几种全拼都存到py数组中
                py = PinyinHelper.toHanyuPinyinStringArray(aHz, format);
                //取出改汉字全拼的第一种读音，并存放到字符串pys后
                pys.append(py[0]);
            } else {
                //如果不是汉字字符，间接取出字符并连接到 pys 后
                pys.append(Character.toString(aHz));
            }
        }

        return pys.toString();
    }

}
